home *** CD-ROM | disk | FTP | other *** search
/ Freelog 117 / FreelogNo117-OctobreNovembre2013.iso / Programmation / jedit / jedit5.1.0install.exe / {app} / modes / ruby.xml < prev    next >
Extensible Markup Language  |  2013-07-28  |  16KB  |  494 lines

  1. <?xml version="1.0"?>
  2. <!DOCTYPE MODE SYSTEM "xmode.dtd">
  3. <!-- Ruby mode by Ian Maclean (Ruby edit mode v0.7.4) -->
  4. <!-- tweakage by Chris Morris - clabs.org -->
  5. <!-- further tweakage by Christophe Grandsire -->
  6. <!-- further tweakage by Robert McKinnon 2004 -->
  7. <!-- Major overhaul by Karl von Laudermann -->
  8. <!-- More tweakage by Jim Morris (wolfmanjm), adds electric unindent for else, elsif, rescue, end -->
  9. <!-- More tweakage by Jim Morris (wolfmanjm), fixed when statements for most cases -->
  10. <!-- recommended mode catalog entry:
  11.     <MODE NAME="ruby" FILE="ruby.xml" FILE_NAME_GLOB="*.{rb,rbw}" FIRST_LINE_GLOB="#!*/*ruby*" /> -->
  12. <MODE>
  13.     <PROPS>
  14.         <PROPERTY NAME="indentOpenBrackets" VALUE="{"/>
  15.         <PROPERTY NAME="indentCloseBrackets" VALUE="}"/>
  16.         <PROPERTY NAME="unalignedOpenBrackets" VALUE="("/>
  17.         <PROPERTY NAME="unalignedCloseBrackets" VALUE=")"/>
  18.         <PROPERTY NAME="lineUpClosingBracket" VALUE="true"/>
  19.         <PROPERTY NAME="commentStart" VALUE="=begin"/>
  20.         <PROPERTY NAME="commentEnd" VALUE="=end"/>
  21.         <PROPERTY NAME="lineComment" VALUE="#"/>
  22.         <PROPERTY NAME="indentNextLines"
  23.               VALUE="[^#]*\s+do(\s*|(\s+\|.+\|\s*))|\s*(if\s+.*|elsif.*|else.*|do(\s*|\s+.*)|case\s+.*|when\s+.*|while\s+.*|for\s+.*|until\s+.*|loop\s+.*|def\s+.*|class\s+.*|module\s+.*|begin.*|unless\s+.*|rescue.*|ensure.*)+"/>
  24.         <PROPERTY NAME="unindentThisLine" VALUE="^\s*(else.*|end\s*|elsif.*|rescue.*|when.*|ensure.*)$"/>
  25.         <PROPERTY NAME="unindentNextLines" VALUE="^\s*(end\s*|else.*|rescue.*|elsif.*|when.*|ensure.*)$"/>
  26.         <PROPERTY NAME="indentNextLine"
  27.               VALUE="^[^#]*([^$](:|\+|~|\*|-|%|<|>|&|\^|\.|=)|\s(/|\!|\?|\|)|\b(not|and|or)|\\)\s*$"/>
  28.         <PROPERTY NAME="electricKeys" VALUE="edfn"/>
  29.     </PROPS>
  30.     <RULES IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE"
  31.            DIGIT_RE="(0b[01]([01_]*[01])?)|(0x[\p{XDigit}]([\p{XDigit}_]*[\p{XDigit}])?)|(0([0-7_]*[0-7])?)|(0d[0-9]([0-9_]*[0-9])?)|([1-9]([0-9_]*[0-9])?)|([0-9]([0-9_]*[0-9])?[Ee]([0-9]([0-9_]*[0-9])?)?)">
  32.         <!--       ^ Binary literal    | ^ Hex literal                               | ^ Octal literal  | ^ "0d" Style Dec lit   | ^ Normal Dec literal | ^ Float literal w/out dec point, with exp. -->
  33.  
  34.         <!-- Ruby comment (Inline Documentation ) -->
  35.         <SPAN TYPE="COMMENT2">
  36.             <BEGIN>=begin</BEGIN>
  37.             <END AT_LINE_START="TRUE">=end</END>
  38.         </SPAN>
  39.  
  40.         <!-- Class and instance vars -->
  41.         <MARK_FOLLOWING TYPE="KEYWORD4">@</MARK_FOLLOWING>
  42.  
  43.         <!-- Method, class and modules names -->
  44.         <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1">\bdef\b</MARK_FOLLOWING>
  45.         <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1">\bundef\b</MARK_FOLLOWING>
  46.         <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1">\bclass\b</MARK_FOLLOWING>
  47.         <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1">\bmodule\b</MARK_FOLLOWING>
  48.  
  49.         <!-- String literals -->
  50.         <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  51.             <BEGIN>"</BEGIN>
  52.             <END>"</END>
  53.         </SPAN>
  54.  
  55.         <SPAN TYPE="LITERAL1" ESCAPE="\">
  56.             <BEGIN>'</BEGIN>
  57.             <END>'</END>
  58.         </SPAN>
  59.  
  60.         <!-- %Q(Hello world) %(Hello world)-->
  61.         <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  62.             <BEGIN>%Q?\(</BEGIN>
  63.             <END>)</END>
  64.         </SPAN_REGEXP>
  65.  
  66.         <!-- %q(Hello world) -->
  67.         <SPAN TYPE="LITERAL1" ESCAPE="\">
  68.             <BEGIN>%q(</BEGIN>
  69.             <END>)</END>
  70.         </SPAN>
  71.  
  72.         <!-- %Q{Hello world} %{Hello world} -->
  73.         <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  74.             <BEGIN>%Q?\{</BEGIN>
  75.             <END>}</END>
  76.         </SPAN_REGEXP>
  77.  
  78.         <!-- %q{Hello world} -->
  79.         <SPAN TYPE="LITERAL1" ESCAPE="\">
  80.             <BEGIN>%q{</BEGIN>
  81.             <END>}</END>
  82.         </SPAN>
  83.  
  84.         <!-- %Q[Hello world] %[Hello world] -->
  85.         <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  86.             <BEGIN>%Q?\[</BEGIN>
  87.             <END>]</END>
  88.         </SPAN_REGEXP>
  89.  
  90.         <!-- %q[Hello world] -->
  91.         <SPAN TYPE="LITERAL1" ESCAPE="\">
  92.             <BEGIN>%q[</BEGIN>
  93.             <END>]</END>
  94.         </SPAN>
  95.  
  96.         <!-- %Q<Hello world> %<Hello world> -->
  97.         <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  98.             <BEGIN>%Q?<</BEGIN>
  99.             <END>></END>
  100.         </SPAN_REGEXP>
  101.  
  102.         <!-- %q<Hello world> -->
  103.         <SPAN TYPE="LITERAL1" ESCAPE="\">
  104.             <BEGIN>%q<</BEGIN>
  105.             <END>></END>
  106.         </SPAN>
  107.  
  108.         <!-- I made the next three forms as three instead of two, because the
  109.              first two actually support whitespace as a delimiter, and the third
  110.              one doesn't. -->
  111.         <!-- %Q$Hello world$ -->
  112.         <SPAN_REGEXP HASH_CHAR="%Q" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  113.             <BEGIN>%Q([^\p{Alnum}])</BEGIN>
  114.             <END>$1</END>
  115.         </SPAN_REGEXP>
  116.  
  117.         <!-- %q$Hello world$ -->
  118.         <SPAN_REGEXP HASH_CHAR="%q" TYPE="LITERAL1" ESCAPE="\">
  119.             <BEGIN>%q([^\p{Alnum}])</BEGIN>
  120.             <END>$1</END>
  121.         </SPAN_REGEXP>
  122.  
  123.         <!-- %$Hello world$ -->
  124.         <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  125.             <BEGIN>%([^\p{Alnum}\p{Space}])</BEGIN>
  126.             <END>$1</END>
  127.         </SPAN_REGEXP>
  128.  
  129.         <!-- %W(Array of strings) -->
  130.         <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  131.             <BEGIN>%W(</BEGIN>
  132.             <END>)</END>
  133.         </SPAN>
  134.  
  135.         <!-- %w(Array of strings) -->
  136.         <SPAN TYPE="LITERAL1" ESCAPE="\">
  137.             <BEGIN>%w(</BEGIN>
  138.             <END>)</END>
  139.         </SPAN>
  140.  
  141.         <!-- %W{Array of strings} -->
  142.         <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  143.             <BEGIN>%W{</BEGIN>
  144.             <END>}</END>
  145.         </SPAN>
  146.  
  147.         <!-- %w{Array of strings} -->
  148.         <SPAN TYPE="LITERAL1" ESCAPE="\">
  149.             <BEGIN>%w{</BEGIN>
  150.             <END>}</END>
  151.         </SPAN>
  152.  
  153.         <!-- %W[Array of strings] -->
  154.         <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  155.             <BEGIN>%W[</BEGIN>
  156.             <END>]</END>
  157.         </SPAN>
  158.  
  159.         <!-- %w[Array of strings] -->
  160.         <SPAN TYPE="LITERAL1" ESCAPE="\">
  161.             <BEGIN>%w[</BEGIN>
  162.             <END>]</END>
  163.         </SPAN>
  164.  
  165.         <!-- %W<Array of strings>  -->
  166.         <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  167.             <BEGIN>%W<</BEGIN>
  168.             <END>></END>
  169.         </SPAN>
  170.  
  171.         <!-- %w<Array of strings> -->
  172.         <SPAN TYPE="LITERAL1" ESCAPE="\">
  173.             <BEGIN>%w<</BEGIN>
  174.             <END>></END>
  175.         </SPAN>
  176.  
  177.         <!-- %W$Array of strings$ -->
  178.         <SPAN_REGEXP HASH_CHAR="%W" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  179.             <BEGIN>%W([^\p{Alnum}\p{Space}])</BEGIN>
  180.             <END>$1</END>
  181.         </SPAN_REGEXP>
  182.  
  183.         <!-- %w@Array of strings@ -->
  184.         <SPAN_REGEXP HASH_CHAR="%w" TYPE="LITERAL1" ESCAPE="\">
  185.             <BEGIN>%w([^\p{Alnum}\p{Space}])</BEGIN>
  186.             <END>$1</END>
  187.         </SPAN_REGEXP>
  188.  
  189.         <!-- Here documents <<"FOO" <<-"FOO" -->
  190.         <!-- Unfortunately, in a SPAN_REGEXP element only the <BEGIN> tag takes
  191.              a regex, not the <END> tag. So an instance of FOO anywhere in the here
  192.              document will terminate highlighting; I couldn't make it smarter. -->
  193.         <SPAN_REGEXP HASH_CHAR="<<" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  194.             <BEGIN><<-?"([\p{Graph}]+)"</BEGIN>
  195.             <END REGEXP="TRUE">^\S*$1$</END>
  196.         </SPAN_REGEXP>
  197.  
  198.         <!-- Here documents <<'FOO' <<-'FOO' -->
  199.         <!-- Unfortunately, in a SPAN_REGEXP element only the <BEGIN> tag takes
  200.              a regex, not the <END> tag. So an instance of FOO anywhere in the here
  201.              document will terminate highlighting; I couldn't make it smarter. -->
  202.         <SPAN_REGEXP HASH_CHAR="<<" TYPE="LITERAL1">
  203.             <BEGIN><<-?'([\p{Graph}]+)'</BEGIN>
  204.             <END REGEXP="TRUE">^\S*$1$</END>
  205.         </SPAN_REGEXP>
  206.  
  207.         <!-- Here documents <<FOO <<-FOO -->
  208.         <!-- Unfortunately, in a SPAN_REGEXP element only the <BEGIN> tag takes
  209.              a regex, not the <END> tag. So an instance of FOO anywhere in the here
  210.              document will terminate highlighting; I couldn't make it smarter. -->
  211.         <SPAN_REGEXP HASH_CHAR="<<" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
  212.             <BEGIN><<-?([A-Za-z_]+)</BEGIN>
  213.             <END REGEXP="TRUE">^\S*$1$</END>
  214.         </SPAN_REGEXP>
  215.  
  216.         <!-- Shell command strings -->
  217.  
  218.         <!-- `echo foo` -->
  219.         <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
  220.             <BEGIN>`</BEGIN>
  221.             <END>`</END>
  222.         </SPAN>
  223.  
  224.         <!-- %x(echo foo) -->
  225.         <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
  226.             <BEGIN>%x(</BEGIN>
  227.             <END>)</END>
  228.         </SPAN>
  229.  
  230.         <!-- %x{echo foo} -->
  231.         <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
  232.             <BEGIN>%x{</BEGIN>
  233.             <END>}</END>
  234.         </SPAN>
  235.  
  236.         <!-- %x[echo foo] -->
  237.         <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
  238.             <BEGIN>%x[</BEGIN>
  239.             <END>]</END>
  240.         </SPAN>
  241.  
  242.         <!-- %x<echo foo> -->
  243.         <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
  244.             <BEGIN>%x<</BEGIN>
  245.             <END>></END>
  246.         </SPAN>
  247.  
  248.         <!-- %x$echo foo$ -->
  249.         <SPAN_REGEXP HASH_CHAR="%x" TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
  250.             <BEGIN>%x([^\p{Alnum}\p{Space}])</BEGIN>
  251.             <END>$1</END>
  252.         </SPAN_REGEXP>
  253.  
  254.         <!-- Regular expressions -->
  255.  
  256.         <!-- /regexp?/ -->
  257.         <!-- If a regexp begins with a whitespace (including a newline),
  258.                 the beginning "/" is wrongly treated as a division operator.
  259.                 But such regexp is rare enough and one can use %r notations
  260.                 or write like "/\ ..." to force jEdit to treat it as a
  261.                 regexp. -->
  262.         <SEQ_REGEXP HASH_CHAR="/" TYPE="OPERATOR">/=?($|\s)</SEQ_REGEXP>
  263.         <!-- AT_WORD_START is TRUE not to handle "a/b/c". -->
  264.         <SPAN AT_WORD_START="TRUE" TYPE="LITERAL3" DELEGATE="RegexpLiteral">
  265.             <BEGIN>/</BEGIN>
  266.             <END>/</END>
  267.         </SPAN>
  268.  
  269.         <!-- %r(regexp?) -->
  270.         <SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">
  271.             <BEGIN>%r(</BEGIN>
  272.             <END>)</END>
  273.         </SPAN>
  274.  
  275.         <!-- %r{regexp?} -->
  276.         <SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">
  277.             <BEGIN>%r{</BEGIN>
  278.             <END>}</END>
  279.         </SPAN>
  280.  
  281.         <!-- %r[regexp?] -->
  282.         <SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">
  283.             <BEGIN>%r[</BEGIN>
  284.             <END>]</END>
  285.         </SPAN>
  286.  
  287.         <!-- %r<regexp?> -->
  288.         <SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">
  289.             <BEGIN>%r<</BEGIN>
  290.             <END>></END>
  291.         </SPAN>
  292.  
  293.         <!-- %r$regexp?$ -->
  294.         <SPAN_REGEXP HASH_CHAR="%r" TYPE="LITERAL3" DELEGATE="RegexpLiteral">
  295.             <BEGIN>%r([^\p{Alnum}\p{Space}])</BEGIN>
  296.             <END>$1</END>
  297.         </SPAN_REGEXP>
  298.  
  299.         <!-- Std Comment -->
  300.         <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>
  301.  
  302.         <!-- Predefined global variables -->
  303.         <SEQ_REGEXP HASH_CHAR="$-" TYPE="KEYWORD3" AT_WORD_START="TRUE">\$-[0adFiIKlpvw](?![\p{Alnum}_])
  304.         </SEQ_REGEXP>
  305.  
  306.         <SEQ_REGEXP HASH_CHAR="$" TYPE="KEYWORD3" AT_WORD_START="TRUE">\$[0-9!@&\+`'=~/\\,\.;<>_\*"\$\?\:F](?![\p{Alnum}_])</SEQ_REGEXP>
  307.  
  308.         <!-- Because of the ? char, this can't be done as a KEYWORD element -->
  309.         <SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">defined?</SEQ>
  310.  
  311.         <!-- Highlight "include" but not "include?" -->
  312.         <SEQ_REGEXP HASH_CHAR="include" TYPE="KEYWORD2" AT_WORD_START="TRUE">include(?![\p{Alnum}_\?])
  313.         </SEQ_REGEXP>
  314.  
  315.         <!-- Not Operators but like the syntax highlight to match operators -->
  316.         <SEQ TYPE="OPERATOR">{</SEQ>
  317.         <SEQ TYPE="OPERATOR">}</SEQ>
  318.         <SEQ TYPE="OPERATOR">(</SEQ>
  319.         <SEQ TYPE="OPERATOR">)</SEQ>
  320.  
  321.         <!-- Arithmetic operators -->
  322.         <SEQ TYPE="OPERATOR">::</SEQ>
  323.         <SEQ TYPE="OPERATOR">===</SEQ>
  324.         <SEQ TYPE="OPERATOR">=</SEQ>
  325.         <SEQ TYPE="OPERATOR">>></SEQ>
  326.         <SEQ TYPE="OPERATOR"><<</SEQ>
  327.         <SEQ TYPE="OPERATOR"><=</SEQ>
  328.         <SEQ TYPE="OPERATOR">+</SEQ>
  329.         <SEQ TYPE="OPERATOR">-</SEQ>
  330.         <SEQ TYPE="OPERATOR">/</SEQ>
  331.  
  332.         <SEQ TYPE="OPERATOR">**</SEQ>
  333.         <SEQ TYPE="OPERATOR">*</SEQ>
  334.  
  335.         <SEQ TYPE="OPERATOR">%</SEQ>
  336.  
  337.         <!-- Logical Operators -->
  338.         <SEQ TYPE="OPERATOR">&</SEQ>
  339.         <SEQ TYPE="OPERATOR">|</SEQ>
  340.         <SEQ TYPE="OPERATOR">!</SEQ>
  341.         <SEQ TYPE="OPERATOR">></SEQ>
  342.         <SEQ TYPE="OPERATOR"><</SEQ>
  343.         <SEQ TYPE="OPERATOR">^</SEQ>
  344.         <SEQ TYPE="OPERATOR">~</SEQ>
  345.  
  346.         <!-- Range operators -->
  347.         <SEQ TYPE="OPERATOR">...</SEQ>
  348.         <SEQ TYPE="OPERATOR">..</SEQ>
  349.  
  350.         <SEQ TYPE="OPERATOR">]</SEQ>
  351.         <SEQ TYPE="OPERATOR">[</SEQ>
  352.         <SEQ TYPE="OPERATOR">?</SEQ>
  353.  
  354.         <!-- Symbols -->
  355.         <SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR=":" TYPE="LITERAL4">:[\p{Alpha}_][\p{Alnum}_]*[?]?</SEQ_REGEXP>
  356.         <SPAN AT_WORD_START="TRUE" TYPE="LITERAL4">
  357.           <BEGIN>:'</BEGIN> <END>'</END>
  358.         </SPAN>
  359.         <!-- bang = '!'
  360.              :"hello world#{bang}" -->
  361.         <SPAN AT_WORD_START="TRUE" TYPE="LITERAL4" DELEGATE="doubleQuoteSymbol">
  362.           <BEGIN>:"</BEGIN> <END>"</END>
  363.         </SPAN>
  364.  
  365.         <!-- %s$Hello world$ -->
  366.         <SPAN_REGEXP HASH_CHAR="%s" TYPE="LITERAL4">
  367.           <BEGIN>%s([^\p{Alnum}])</BEGIN>
  368.           <END>$1</END>
  369.     </SPAN_REGEXP>
  370.         <KEYWORDS>
  371.             <KEYWORD1>BEGIN</KEYWORD1>
  372.             <KEYWORD1>END</KEYWORD1>
  373.             <KEYWORD1>alias</KEYWORD1>
  374.             <KEYWORD1>begin</KEYWORD1>
  375.             <KEYWORD1>break</KEYWORD1>
  376.             <KEYWORD1>case</KEYWORD1>
  377.             <KEYWORD1>class</KEYWORD1>
  378.             <KEYWORD1>def</KEYWORD1>
  379.             <KEYWORD1>do</KEYWORD1>
  380.             <KEYWORD1>else</KEYWORD1>
  381.             <KEYWORD1>elsif</KEYWORD1>
  382.             <KEYWORD1>end</KEYWORD1>
  383.             <KEYWORD1>ensure</KEYWORD1>
  384.             <KEYWORD1>for</KEYWORD1>
  385.             <KEYWORD1>if</KEYWORD1>
  386.             <KEYWORD1>in</KEYWORD1>
  387.             <KEYWORD1>module</KEYWORD1>
  388.             <KEYWORD1>next</KEYWORD1>
  389.             <KEYWORD1>print</KEYWORD1>
  390.             <KEYWORD1>puts</KEYWORD1>
  391.             <KEYWORD1>redo</KEYWORD1>
  392.             <KEYWORD1>rescue</KEYWORD1>
  393.             <KEYWORD1>retry</KEYWORD1>
  394.             <KEYWORD1>return</KEYWORD1>
  395.             <KEYWORD1>then</KEYWORD1>
  396.             <KEYWORD1>undef</KEYWORD1>
  397.             <KEYWORD1>unless</KEYWORD1>
  398.             <KEYWORD1>until</KEYWORD1>
  399.             <KEYWORD1>when</KEYWORD1>
  400.             <KEYWORD1>while</KEYWORD1>
  401.             <KEYWORD1>yield</KEYWORD1>
  402.  
  403.             <KEYWORD2>load</KEYWORD2>
  404.             <KEYWORD2>require</KEYWORD2>
  405.             <KEYWORD2>initialize</KEYWORD2>
  406.  
  407.             <OPERATOR>and</OPERATOR>
  408.             <OPERATOR>not</OPERATOR>
  409.             <OPERATOR>or</OPERATOR>
  410.  
  411.             <KEYWORD3>false</KEYWORD3>
  412.             <KEYWORD3>nil</KEYWORD3>
  413.             <KEYWORD3>self</KEYWORD3>
  414.             <KEYWORD3>super</KEYWORD3>
  415.             <KEYWORD3>true</KEYWORD3>
  416.  
  417.             <KEYWORD3>$defout</KEYWORD3>
  418.             <KEYWORD3>$deferr</KEYWORD3>
  419.             <KEYWORD3>$stderr</KEYWORD3>
  420.             <KEYWORD3>$stdin</KEYWORD3>
  421.             <KEYWORD3>$stdout</KEYWORD3>
  422.             <KEYWORD3>$DEBUG</KEYWORD3>
  423.             <KEYWORD3>$FILENAME</KEYWORD3>
  424.             <KEYWORD3>$LOAD_PATH</KEYWORD3>
  425.             <KEYWORD3>$SAFE</KEYWORD3>
  426.             <KEYWORD3>$VERBOSE</KEYWORD3>
  427.             <KEYWORD3>__FILE__</KEYWORD3>
  428.             <KEYWORD3>__LINE__</KEYWORD3>
  429.             <KEYWORD3>ARGF</KEYWORD3>
  430.             <KEYWORD3>ARGV</KEYWORD3>
  431.             <KEYWORD3>ENV</KEYWORD3>
  432.             <KEYWORD3>DATA</KEYWORD3>
  433.             <KEYWORD3>FALSE</KEYWORD3>
  434.             <KEYWORD3>NIL</KEYWORD3>
  435.             <KEYWORD3>RUBY_PLATFORM</KEYWORD3>
  436.             <KEYWORD3>RUBY_RELEASE_DATE</KEYWORD3>
  437.             <KEYWORD3>RUBY_VERSION</KEYWORD3>
  438.             <KEYWORD3>STDERR</KEYWORD3>
  439.             <KEYWORD3>STDIN</KEYWORD3>
  440.             <KEYWORD3>STDOUT</KEYWORD3>
  441.             <KEYWORD3>SCRIPT_LINES__</KEYWORD3>
  442.             <KEYWORD3>TOPLEVEL_BINDING</KEYWORD3>
  443.             <KEYWORD3>TRUE</KEYWORD3>
  444.         </KEYWORDS>
  445.     </RULES>
  446.  
  447.     <!-- Delegate contents of #{} expression in double quotes to MAIN so that
  448.          it will be syntax highlighted as well -->
  449.     <RULES DEFAULT="LITERAL1" SET="doubleQuoteLiteral" ESCAPE="\">
  450.         <SPAN DELEGATE="MAIN" TYPE="OPERATOR">
  451.             <BEGIN>#{</BEGIN>
  452.             <END>}</END>
  453.         </SPAN>
  454.         <MARK_FOLLOWING TYPE="KEYWORD4">#@@</MARK_FOLLOWING>
  455.         <MARK_FOLLOWING TYPE="KEYWORD4">#@</MARK_FOLLOWING>
  456.         <MARK_FOLLOWING TYPE="NULL">#$</MARK_FOLLOWING>
  457.     </RULES>
  458.     <!-- Delegate contents of #{} expression in a double quoted symbol to MAIN so that
  459.          it will be syntax highlighted as well -->
  460.     <RULES DEFAULT="LITERAL4" SET="doubleQuoteSymbol" ESCAPE="\">
  461.       <SPAN DELEGATE="MAIN" TYPE="OPERATOR">
  462.       <BEGIN>#{</BEGIN>
  463.       <END>}</END>
  464.     </SPAN>
  465.     <MARK_FOLLOWING TYPE="KEYWORD4">#@@</MARK_FOLLOWING>
  466.     <MARK_FOLLOWING TYPE="KEYWORD4">#@</MARK_FOLLOWING>
  467.     <MARK_FOLLOWING TYPE="NULL">#$</MARK_FOLLOWING>
  468.   </RULES>
  469.         
  470.     <!-- Delegate contents of #{} expression in backquotes to MAIN so that
  471.          it will be syntax highlighted as well -->
  472.     <RULES DEFAULT="LITERAL2" SET="BackquoteLiteral" ESCAPE="\">
  473.         <SPAN DELEGATE="MAIN" TYPE="OPERATOR">
  474.             <BEGIN>#{</BEGIN>
  475.             <END>}</END>
  476.         </SPAN>
  477.         <MARK_FOLLOWING TYPE="KEYWORD4">#@@</MARK_FOLLOWING>
  478.         <MARK_FOLLOWING TYPE="KEYWORD4">#@</MARK_FOLLOWING>
  479.         <MARK_FOLLOWING TYPE="NULL">#$</MARK_FOLLOWING>
  480.     </RULES>
  481.  
  482.     <!-- Delegate contents of #{} expression in a regexp to MAIN so that
  483.          it will be syntax highlighted as well -->
  484.     <RULES DEFAULT="LITERAL3" SET="RegexpLiteral" ESCAPE="\">
  485.         <SPAN DELEGATE="MAIN" TYPE="OPERATOR">
  486.             <BEGIN>#{</BEGIN>
  487.             <END>}</END>
  488.         </SPAN>
  489.         <MARK_FOLLOWING TYPE="KEYWORD4">#@@</MARK_FOLLOWING>
  490.         <MARK_FOLLOWING TYPE="KEYWORD4">#@</MARK_FOLLOWING>
  491.         <MARK_FOLLOWING TYPE="NULL">#$</MARK_FOLLOWING>
  492.     </RULES>
  493. </MODE>
  494.